Hi大家好,
這是我參加 iT 邦幫忙鐵人賽的第 1 次挑戰,這次的主題聚焦在結合 Python 爬蟲、RAG(檢索增強生成)與 AI,打造一套 PTT 文章智慧問答系統。在過程中,我會依照每天進度上傳程式碼到 GitHub ,方便大家參考學習。也歡迎留言或來信討論,我的信箱是 gerryearth@gmail.com。
今天我們將接續今天未完成的部分,完整部署到 Docker 的容器!
將你目前專案的 Python 套件建立成 requirements.txt
:
pip freeze > requirements.txt
將 ptt_rag_demo/settings.py
的 DATABASES
設定改為以下,與 docker-compose 中的資料庫連接資訊一致:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_database',
'USER': 'ptt_rag',
'PASSWORD': 'ptt_rag',
'HOST': 'my_mariadb', # 注意這裡是服務名稱,不是 localhost
'PORT': '3306',
}
}
請先開啟 Docker Desktop ,並在專案根目錄執行以下指令:
docker-compose up
此指令會依照 docker-compose.yml
的計畫進行部屬:
web
(Django)與 mariadb
(MariaDB)容器其他常用指令:
docker-compose down # 停止容器
docker-compose up -d --build # 在背景重啟容器
第一次啟動會發現連線不到 my_mariadb
,這是因為我們還沒給予權限。
首先請輸入:
docker exec -it my_mariadb mariadb -u root -p
以 root 身分互動式地進入名為
my_mariadb
的容器,並開啟 MariaDB 客戶端以連線至資料庫。
接下來輸入:
CREATE USER IF NOT EXISTS 'ptt_rag'@'%' IDENTIFIED BY 'ptt_rag';
GRANT ALL PRIVILEGES ON my_database.* TO 'ptt_rag'@'%';
FLUSH PRIVILEGES;
建立一個使用者
ptt_rag
,密碼為ptt_rag
,並允許他從任何位置連接 MariaDB,且擁有my_database
資料庫的完整存取權限。可以用指令檢查受否有存取權限:
SELECT user, host FROM mysql.user WHERE user = 'ptt_rag';
到這裡若還是無法連線,請嘗試將 django_web
重啟 (restart)。
Starting development server at http://0.0.0.0:8000/
明天【Day 06】探索 PTT 結構與版面資料抓取 – 從 HTML 中提取文章資訊,今天我們將動手開始第一個核心功能:PTT 文章爬蟲。